﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Security;
using System.Diagnostics.CodeAnalysis;
using System.Web;

namespace Steve
{
    public interface IAccountService
    {
        /// <summary>
        /// Returns current user only if they are authenticated
        /// </summary>
        /// <returns>Instance of MembershipUser for current user or null</returns>
        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")]
        MembershipUser GetAuthenticatedUser();
        
        /// <summary>
        /// Returns current user even if unauthenticated
        /// </summary>
        /// <param name="steve">Current SteveContext instance</param>
        /// <returns>Instance of MembershipUser for current user or null</returns>
        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")]
        MembershipUser GetUser();

        bool ValidateUser(string userName, string password);

        void SignIn(string userName);

        void SignOut();

        void ClearUser();
    }
}
